// 对 axios 进行二次封装
import store from '@/store'
import axios from 'axios'
// 引入进度条和进度条的样式
import nprogress from 'nprogress'
import 'nprogress/nprogress.css'

// 利用 axios 对象的 create 方法创建一个 axios 实例
const request = axios.create({
    // axios 的配置对象
    // 基础路径，发请求时，路径当中会出现 /api
    baseURL: "/api",
    // 超时限定，当超过了 5000 ms 未请求完成则返回请求失败
    timeout: 5000,
})

// 请求拦截器：在发请求之前拦截
request.interceptors.request.use((config) => {
    if(store.state.detail.uuid_taken){
        //请求头加一个字段userTempId
        config.headers.userTempId = store.state.detail.uuid_taken
    }
    //判断需要携带token给服务器
    if(store.state.user.token){
        config.headers.token = store.state.user.token
    }
    // 进度条开始
    nprogress.start()
    return config;
})

// 响应拦截器
request.interceptors.response.use((res) => {
    // 成功回调
    // 进度条结束
    nprogress.done()
    return res.data
},(error) => {
    // 失败回调
    console.log(error)
    return Promise.reject(new Error('Fail'))
})

export default request
